#-----------------------------------------------------------------------------
# File Name: makefile
# Description
# -----------
# This is the makefile for the Paylink64 project.
#
#-----------------------------------------------------------------------------
SHELL 		= /bin/sh

#-- Release Compiler Flags ---------------------------------------------------


CXXFLAGS	+= -O2 -g0 -Wall -I. -I.. -I../.. -Wno-sign-compare -fno-strict-aliasing \
                   -Wno-write-strings -Wno-deprecated-declarations -pipe -fomit-frame-pointer -D_GNU_SOURCE

CFLAGS		+= -O2 -g0 -Wall -I. -I.. -I../.. -Wno-sign-compare -fno-strict-aliasing \
                   -Wno-write-strings -pipe -fomit-frame-pointer -D_GNU_SOURCE

#-- Required libraries -------------------------------------------------------

LIBS64		 	 =                            -lusb-1.0 -lrt -lstdc++ -lpthread -ldl
LIBS32		 	 =  -L/usr/local/lib/i386/lib -lusb-1.0 -lrt -lstdc++ -lpthread -ldl
LIBSNOTUSB		 =  -lrt -lstdc++ -lpthread -ldl

#-- Dependencies -------------------------------------------------------------

PAYLINK_DRIVER_OBJS32 = LinuxMain.o32 DriverCode.o32 ReadConfig.o32 ../libftdi.o32 ../UsbAccess.o32 ../FtdiAccess.o32 ../VcpLinux.o32
PAYLINK_OBJS32 = LinuxCode/USBPaylink.o32 \
				LinuxCode/USBPaylinkPC.o32 \
				LinuxCode/Acceptor.o32 \
				LinuxCode/ccBcr.o32 \
				LinuxCode/BNVCrypt.o32 \
				LinuxCode/ccPort.o32 \
				LinuxCode/Device.o32 \
				LinuxCode/Escrow.o32 \
				LinuxCode/Printer.o32 \
				LinuxCode/Hopper.o32 \
				LinuxCode/HostIFace.o32 \
				LinuxCode/Port.o32
                
        
PAYLINK_DRIVER_OBJS64 = LinuxMain.o64 DriverCode.o64 ReadConfig.o64 ../libftdi.o64 ../UsbAccess.o64 ../FtdiAccess.o64 ../VcpLinux.o64
PAYLINK_OBJS64 = LinuxCode/USBPaylink.o64 \
				LinuxCode/USBPaylinkPC.o64 \
				LinuxCode/Acceptor.o64 \
				LinuxCode/ccBcr.o64 \
				LinuxCode/BNVCrypt.o64 \
				LinuxCode/ccPort.o64 \
				LinuxCode/Device.o64 \
				LinuxCode/Escrow.o64 \
				LinuxCode/Printer.o64 \
				LinuxCode/Hopper.o64 \
				LinuxCode/HostIFace.o64 \
				LinuxCode/Port.o64
        
#-- Compile All --------------------------------------------------------------

.PHONEY: all
all: 	Paylink64 Paylink32

#-- Clean Up -----------------------------------------------------------------

.PHONEY: clean
clean:
	rm -f ../FtdiAccess.o* ../FtdiMilan.o* ../VcpLinux.o* 
	rm -f *.[bo]*
	rm -f *.err
	rm -f Paylink64 Paylink32

#-- Install ------------------------------------------------------------------

.PHONEY: install
install:
	if [ -e "Paylink64"    ]; then cp -fv Paylink64       /usr/local/bin/ ; fi
	if [ -e "PaylinkBNR64" ]; then cp -fv PaylinkBNR64    /usr/local/bin/ ; fi

#-- Build targets ------------------------------------------------------------

%.o32 : %.cpp
		$(CXX) -m32 $(CXXFLAGS) -c -DLinuxPaylink  -o $*.o32 $*.cpp

%.o32 : %.c
		$(CC)    -m32 $(CFLAGS)  -c -DLinuxPaylink  -o $*.o32 $*.c

%.odll : %.cpp
		$(CXX)  -m32 $(CXXFLAGS) -c -I../DriverDLLs -fpermissive -DLinuxPaylink -DPROCESSOR=PC -o $*.odll $*.cpp

%.o64 : %.cpp
		$(CXX)  $(CXXFLAGS) -c -DLinuxPaylink -DBit64 -o $*.o64 $*.cpp

%.o64 : %.c
		$(CC)   $(CFLAGS)  -c -DLinuxPaylink -DBit64 -o $*.o64 $*.c

%.od64 : %.cpp
		$(CXX)  $(CXXFLAGS) -c -I../DriverDLLs -fpermissive -DLinuxPaylink -DBit64 -DPROCESSOR=PC -o $*.od64 $*.cpp


Paylink32:	$(PAYLINK_DRIVER_OBJS32) $(PAYLINK_OBJS32)
		rm -f Paylink32
		$(CC) -m32 $(PAYLINK_DRIVER_OBJS32) $(PAYLINK_OBJS32) -no-pie -Wl,--defsym=_Z12CreateDeviceP7DLLLink=0  \
								 $(CFLAGS) $(LIBS32) -o Paylink32
		chown root Paylink32
		chmod 6711 Paylink32
		
Paylink64:	$(PAYLINK_DRIVER_OBJS64) $(PAYLINK_OBJS64)
		rm -f Paylink64
		$(CC)      $(PAYLINK_DRIVER_OBJS64) $(PAYLINK_OBJS64) -no-pie -Wl,--defsym=_Z12CreateDeviceP7DLLLink=0  \
								 $(CFLAGS) $(LIBS64) -o Paylink64
		chown root Paylink64
		chmod 6711 Paylink64

PaylinkBNR64:	$(PAYLINK_DRIVER_OBJS64) $(PAYLINK_OBJS64) ../DriverDLLs/MEIBNR.od64
		rm -f PaylinkBNR64
		$(CC)  $(PAYLINK_DRIVER_OBJS64) $(PAYLINK_OBJS64) ../DriverDLLs/MEIBNR.od64 \
								 $(CFLAGS) $(LIBS64) -lBnrCtlL32 -o PaylinkBNR64
		chown root PaylinkBNR64
		chmod 6711 PaylinkBNR64
		

#------------------------------ END OF FILE ----------------------------------

